package com.doitedu.day02.array

import com.doitedu.day02.beans.User
// 导入可以变的集合包  不可变的是默认的不用导包
import scala.collection.mutable.ArrayBuffer

/**
 * @Date 22.6.20
 * @Created by HANGGE
 * @Description
 * 在scala中所有的集合都是迭代器的子类
 * 所有的集合都可以使用迭代器的方式进行遍历
 * 1 scala中的集合分为  可变的 和  不可变的     [集合的长度]
 * 2 优先使用不可变的集合   a.txt [静态数据]加载数据 --> 遍历数据处理 --->  封装到集合中
 * 3 数组的定义
 * 1) 不可变的数组
 * 2) 可变的数组
 */
object _01Array定义 {
  def main(args: Array[String]): Unit = {
    // 1) 不可变的数组
    val arr1 = Array[Int](1, 2, 3, 4)
    val arr2 = Array[String]("a", "b", "c", "d")
    // 自动推导类型
    val arr3 = Array(2, 3, 4, 5, 6, 7, 8, 9, "a", 12.12)
   // val arr4 = Array[User](new User(), new User(), new User())
    // 2)  Array(1,2,3)  创建了一个数组对象
    // 底层创建了一个对象  返回的
    /*    val x: Array.type = Array  // 数据类型
        val y: Array[Nothing] = Array()  // 对象实例
        println(x)
        println(y)*/

    arr2(1) = "zss" // 修改值  不能改变集合的长度
    for (elem <- arr2) {
      println(elem)
    }

    // 2 可变集合的定义
    /**
     * +=(元素)
     * -=(元素)
     * ++=(子集合)
     * --=(子集合)
     *
     * append(x:Int*)  追加元素
     * clear
     * insert
     * insertAll
     */
    val arrBuffer = ArrayBuffer[Int](1, 2, 3, 4, 5)
    arrBuffer.+=(11)
    println(arrBuffer.toList)
    arrBuffer.+=(12)
    println(arrBuffer.toList)
    arrBuffer.-=(2)
    println(arrBuffer.toList)

    // 一次加入一个子集合
    arrBuffer.++=(Array(11, 22, 33, 44, 55))
    println(arrBuffer.toList)
    // 向集合的后面追加元素  可以是多个
    arrBuffer.append(111, 222, 333, 444, 555)
    println(arrBuffer.toList)

    arrBuffer.clear()
    println(arrBuffer.toList)
    // 在指定位置插入元素   可以一次性插入多个
    arrBuffer.insert(0, 888, 999)
    println(arrBuffer.toList)
    // 在指定位置插入子集元素
    arrBuffer.insertAll(0, Array(1, 2, 3))
    println(arrBuffer.toList)


  }


}
